dotidb=# select count(*) from doti_sensor_report_y2014m09; count ---------- 184,888,345 (1 row) dotidb=# \d+ doti_sensor_report_y2014m09 <-- Partition table of parent table public.doti_sensor_report Table "public.doti_sensor_report_y2014m09" Column | Type | Modifiers -----------------------+-----------------------------+----------- sensor_report_uid | bigint | not null report_type | character varying(255) | not null sensor_report_uuid | uuid | model_uid | bigint | not null sensor_location | geometry | not null node_date_time | timestamp without time zone | Indexes: "doti_sensor_report_y2014m09_pkey" PRIMARY KEY, btree (sensor_report_uid), tablespace "doti_data_y2014" "idx_sensor_report_query_y2014m09" btree (model_uid, node_date_time), tablespace "doti_data_y2014" "sidx_sensor_report_y2014m09" gist (sensor_location) INVALID, tablespace "doti_data_y2014" <-- set invalid to force planner to use compound index, when toggled spatial index runs in eccess of 8 minutes Check constraints: "doti_sensor_report_y2014m09_node_date_time_check" CHECK (node_date_time >= '2014-09-01'::date AND node_date_time < '2014-10-01'::date) Inherits: doti_sensor_report Tablespace: "doti_data_y2014" explain (analyze,buffers) select count(*) as y0_ from DOTI_SENSOR_REPORT this_ where this_.node_date_time between '2014-09-20 23:40:56.245'::timestamp without time zone and '2014-09-21 07:36:47.388'::timestamp without time zone and this_.model_uid=20164 and (ST_within (this_.sensor_location,'010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F') or ST_touches (this_.sensor_location,'010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F')) QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Aggregate (cost=137582.68..137582.71 rows=1 width=0) (actual time=349105.178 rows=1 loops=1) Buffers: shared hit=157038 -> Append (cost=0.00..137572.97 rows=3885 width=0) (actual time=168.419..348986.845 rows=443542 loops=1) Buffers: shared hit=157038 -> Seq Scan on doti_sensor_report this_ (cost=0.00..0.00 rows=1 width=0) (actual time=0.002..0.002 rows=0 loops=1) Filter: ((node_date_time >= '2014-09-20 23:40:56.245'::timestamp without time zone) AND (node_date_time <= '2014-09-21 07:36:47.388'::timestamp without time zone) AND (sensor_location && '010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry) AND (model_uid = 20164) AND (_st_contains('010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry, sensor_location) OR _st_touches(sensor_location, '010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry))) -> Index Scan using idx_sensor_report_query_y2014m09 on doti_sensor_report_y2014m09 this__1 (cost=0.57..137498.17 rows=3883 width=0) (actual time=168.416..348873.308 rows=443542 loops=1) Index Cond: ((model_uid = 20164) AND (node_date_time >= '2014-09-20 23:40:56.245'::timestamp without time zone) AND (node_date_time <= '2014-09-21 07:36:47.388'::timestamp without time zone)) Filter: ((sensor_location && '010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry) AND (_st_contains('010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry, sensor_location) OR _st_touches(sensor_location, '010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry))) Rows Removed by Filter: 3310409 Buffers: shared hit=157038 -> Seq Scan on doti_sensor_report_overflow this__2 (cost=0.00..7480 rows=1 width=0) (actual time=0.002..0.002 rows=0 loops=1) Filter: ((node_date_time >= '2014-09-20 23:40:56.245'::timestamp without time zone) AND (node_date_time <= '2014-09-21 07:36:47.388'::timestamp without time zone) AND (sensor_location && '010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry) AND (model_uid = 20164) AND (_st_contains('010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry, sensor_location) OR _st_touches(sensor_location, '010300000001000000050000006787D1E89889F5BFFBA6BE01196EE53F1AF703F9588EF5BF6D9AC3A07D5FE53F0C2792E0B193F5BF6D9AC3A07D5FE53FC096C4F07198F5BFFBA6BE01196EE53F6787D1E89889F5BFFBA6BE01196EE53F'::geometry))) Total runtime: 349105.317 ms <-- 5.81842 minutes unacceptable (14 rows) dotidb=#